package com.camus.datastructureandalgorithm.algorithm.sort;

/**
 * @author jie.deng 冒泡排序
 */
public class BubbleSortArray implements SortArray {

    @Override
    public int[] sortArray(int[] nums) {
        if (nums == null || nums.length == 0) {
            return nums;
        }
        // 分为已排序区间和未排序区间
        // 每次在未排序区间两两比较，将较大的元素往后冒泡。
        // 第i轮，已排序区间有i个元素,为nums[len-i...len-1]。未排序区间为nums[0...len-1-i]。
        int length = nums.length;
        for (int i = 0; i < length; i++) {
            int k = length - 1 - i;
            for (int j = 0; j < k; j++) {
                if (nums[j] > nums[j + 1]) {
                    nums[j] = nums[j] ^ nums[j + 1];
                    nums[j + 1] = nums[j] ^ nums[j + 1];
                    nums[j] = nums[j] ^ nums[j + 1];
                }
            }
        }
        return nums;
    }

}
